﻿package mortal.game.view.copy.groupCopy.data
{
    import Message.DB.Tables.*;
    import Message.Game.*;
    import extend.language.*;
    import mortal.game.cache.*;
    import mortal.game.events.*;
    import mortal.game.mvc.*;
    import mortal.game.resource.*;
    import mortal.game.view.copy.QuestionCopy.data.*;
    import mortal.game.view.copy.groupCopy.*;
    import mortal.mvc.core.*;

    public class GroupCopyUtil extends Object
    {
        public static var copyId:int;
        private static var copyArr:Array;
        public static var btnSelIndex:int = 0;

        public function GroupCopyUtil()
        {
            return;
        }// end function

        public static function getBoReward(param1:int) : Array
        {
            var _loc_5:Object = null;
            var _loc_2:* = QuestionCopyConfig.instance().questionRewardArr;
            var _loc_3:Array = [];
            var _loc_4:int = 0;
            while (_loc_4 < _loc_2.length)
            {
                
                _loc_5 = _loc_2[_loc_4];
                if (param1 == _loc_5.scoreMax)
                {
                    _loc_3.push(_loc_5);
                }
                _loc_4++;
            }
            _loc_3.sortOn("scoreMin", Array.NUMERIC);
            return _loc_3;
        }// end function

        private static function initCopyId() : void
        {
            if (copyArr != null)
            {
                return;
            }
            copyArr = [[], []];
            var _loc_1:* = Cache.instance.role.roleInfo.level;
            var _loc_2:* = getAllSingleDefenseCopy();
            copyArr[0] = _loc_2;
            _loc_2 = CopyConfig.instance.getDefenseCopy(_loc_1, DefenseInfo.TeamDefenseCopyCode);
            copyArr[1] = _loc_2;
            return;
        }// end function

        public static function reqCopyRewInfo() : void
        {
            var _loc_2:Array = null;
            var _loc_3:int = 0;
            var _loc_4:int = 0;
            initCopyId();
            var _loc_1:int = 0;
            while (_loc_1 < copyArr.length)
            {
                
                _loc_2 = copyArr[_loc_1];
                _loc_3 = 0;
                while (_loc_3 < _loc_2.length)
                {
                    
                    _loc_4 = _loc_2[_loc_3].code;
                    Dispatcher.dispatchEvent(new DataEvent(EventName.GroupCopyGetBoGetRwInfo, _loc_4));
                    _loc_3++;
                }
                _loc_1++;
            }
            return;
        }// end function

        public static function rqeOneCopyRew(param1:int) : void
        {
            if (param1 == 0)
            {
                return;
            }
            Dispatcher.dispatchEvent(new DataEvent(EventName.GroupCopyGetBoGetRwInfo, param1));
            return;
        }// end function

        public static function checkRw() : void
        {
            var _loc_2:int = 0;
            var _loc_1:* = getRewPos();
            switch(_loc_2)
            {
                case 0:
                {
                    break;
                }
                case 1:
                {
                    break;
                }
                default:
                {
                    break;
                }
            }
            return;
        }// end function

        public static function hasRws() : Boolean
        {
            var _loc_1:* = getRewPos();
            if (_loc_1 && _loc_1.length > 1)
            {
                return true;
            }
            return false;
        }// end function

        private static function getRewPos() : Array
        {
            var _loc_4:Array = null;
            var _loc_5:int = 0;
            var _loc_6:int = 0;
            var _loc_1:Boolean = false;
            var _loc_2:Array = [];
            if (copyArr == null)
            {
                return _loc_2;
            }
            var _loc_3:int = 0;
            while (_loc_3 < copyArr.length)
            {
                
                _loc_4 = copyArr[_loc_3];
                _loc_5 = 0;
                while (_loc_5 < _loc_4.length)
                {
                    
                    _loc_6 = _loc_4[_loc_5].code;
                    if (getOneCopyHas(_loc_3, _loc_5, _loc_6, _loc_2) != -1)
                    {
                        return _loc_2;
                    }
                    _loc_5++;
                }
                _loc_3++;
            }
            return _loc_2;
        }// end function

        public static function checkRewByIndex(param1:int) : Array
        {
            var _loc_6:int = 0;
            var _loc_2:Boolean = false;
            var _loc_3:Array = [];
            initCopyId();
            if (param1 < 0 || param1 > 2)
            {
                return _loc_3;
            }
            var _loc_4:* = copyArr[param1];
            var _loc_5:int = 0;
            while (_loc_5 < _loc_4.length)
            {
                
                _loc_6 = _loc_4[_loc_5].code;
                if (getOneCopyHas(param1, _loc_5, _loc_6, _loc_3) != -1)
                {
                    return _loc_3;
                }
                _loc_5++;
            }
            return _loc_3;
        }// end function

        public static function getOneCopyHas(param1:int, param2:int, param3:int, param4:Array) : int
        {
            var _loc_7:Object = null;
            var _loc_8:SDefenseReward = null;
            var _loc_5:* = GroupCopyUtil.getBoReward(param3);
            var _loc_6:int = 0;
            while (_loc_6 < _loc_5.length)
            {
                
                _loc_7 = _loc_5[_loc_6];
                if (DefenseInfo.defenseInfo[param3] == null)
                {
                }
                else
                {
                    _loc_8 = DefenseInfo.defenseInfo[param3];
                    if (_loc_8 == null)
                    {
                    }
                    else if (_loc_8.rewards[_loc_7.scoreMin] == 1)
                    {
                        if (param4)
                        {
                            shineMainBtn(true);
                            param4[0] = param1;
                            param4[1] = param2;
                        }
                        return _loc_6;
                    }
                }
                _loc_6++;
            }
            return -1;
        }// end function

        public static function shineMainBtn(param1:Boolean) : void
        {
            if (param1)
            {
                if (GroupCopyIcon.hasInstance)
                {
                    GroupCopyIcon.instance.playEffect();
                }
            }
            else if (GroupCopyIcon.hasInstance)
            {
                GroupCopyIcon.instance.stopEffect();
            }
            return;
        }// end function

        public static function getDefenseCopyArrByDiff(param1:int) : Array
        {
            var _loc_5:int = 0;
            var _loc_6:TCopy = null;
            var _loc_2:* = DefenseInfo.getCopyArrByDiff(param1);
            var _loc_3:Array = [];
            var _loc_4:int = 0;
            while (_loc_4 < _loc_2.length)
            {
                
                _loc_5 = _loc_2[_loc_4];
                _loc_6 = CopyConfig.instance.defenseCopy[_loc_5];
                _loc_3.push(_loc_6);
                _loc_4++;
            }
            return _loc_3;
        }// end function

        private static function getAllSingleDefenseCopy() : Array
        {
            var _loc_4:Array = null;
            var _loc_5:int = 0;
            var _loc_6:int = 0;
            var _loc_7:TCopy = null;
            var _loc_1:Array = [];
            var _loc_2:* = DefenseInfo.DefenseCopyCodeArr;
            var _loc_3:int = 0;
            while (_loc_3 < _loc_2.length)
            {
                
                _loc_4 = _loc_2[_loc_3];
                _loc_5 = 0;
                while (_loc_5 < _loc_4.length)
                {
                    
                    _loc_6 = _loc_4[_loc_5];
                    _loc_7 = CopyConfig.instance.defenseCopy[_loc_6];
                    _loc_1.push(_loc_7);
                    _loc_5++;
                }
                _loc_3++;
            }
            return _loc_1;
        }// end function

        public static function getRwArrByDiff(param1:int) : Array
        {
            var _loc_2:* = DefenseInfo.getCopyArrByDiff(param1);
            var _loc_3:Array = [];
            var _loc_4:int = 0;
            while (_loc_4 < _loc_2.length)
            {
                
                if (getOneCopyHas(_loc_4, param1, _loc_2[_loc_4], _loc_3) != -1)
                {
                    return _loc_3;
                }
                _loc_4++;
            }
            return null;
        }// end function

        public static function getHighestLvIndex(param1:int) : int
        {
            var _loc_6:TCopy = null;
            var _loc_2:* = getDefenseCopyArrByDiff(param1);
            var _loc_3:* = Cache.instance.role.roleInfo.level;
            var _loc_4:int = 0;
            var _loc_5:int = 0;
            while (_loc_5 < _loc_2.length)
            {
                
                _loc_6 = _loc_2[_loc_5];
                if (_loc_3 >= _loc_6.enterMinLevel && isLowerDiffPass(_loc_5, param1))
                {
                    _loc_4 = _loc_5;
                }
                _loc_5++;
            }
            return _loc_4;
        }// end function

        public static function getHeighestBtnIndex() : int
        {
            var _loc_5:Array = null;
            var _loc_6:int = 0;
            var _loc_7:int = 0;
            var _loc_8:TCopy = null;
            var _loc_1:* = DefenseInfo.DefenseCopyCodeArr;
            var _loc_2:int = 0;
            var _loc_3:* = Cache.instance.role.roleInfo.level;
            var _loc_4:int = 0;
            while (_loc_4 < _loc_1.length)
            {
                
                _loc_5 = _loc_1[_loc_4];
                _loc_6 = 0;
                while (_loc_6 < _loc_5.length)
                {
                    
                    _loc_7 = _loc_5[_loc_6];
                    _loc_8 = CopyConfig.instance.defenseCopy[_loc_7];
                    if (_loc_3 >= _loc_8.enterMinLevel && isLowerDiffPass(_loc_4, _loc_6))
                    {
                        _loc_2 = _loc_6;
                    }
                    _loc_6++;
                }
                _loc_4++;
            }
            return _loc_2;
        }// end function

        private static function isLowerDiffPass(param1:int, param2:int) : Boolean
        {
            if (param2 == 0)
            {
                return true;
            }
            var _loc_3:* = int(DefenseInfo.DefenseCopyCodeArr[param1][(param2 - 1)]);
            if (_loc_3 != 0 && hasPassCopyById(_loc_3))
            {
                return true;
            }
            return false;
        }// end function

        public static function isLowerDiffPassByCode(param1:int) : Boolean
        {
            var _loc_4:Array = null;
            var _loc_5:int = 0;
            var _loc_6:int = 0;
            var _loc_2:* = DefenseInfo.DefenseCopyCodeArr;
            var _loc_3:int = 0;
            while (_loc_3 < _loc_2.length)
            {
                
                _loc_4 = _loc_2[_loc_3];
                _loc_5 = 0;
                while (_loc_5 < _loc_4.length)
                {
                    
                    _loc_6 = _loc_4[_loc_5];
                    if (param1 == _loc_6 && isLowerDiffPass(_loc_3, _loc_5))
                    {
                        return true;
                    }
                    _loc_5++;
                }
                _loc_3++;
            }
            return false;
        }// end function

        public static function hasPassCopyById(param1:int) : Boolean
        {
            var _loc_2:* = GroupCopyUtil.getBoReward(param1);
            if (_loc_2.length == 0)
            {
                return false;
            }
            var _loc_3:* = _loc_2.length - 1;
            var _loc_4:* = _loc_2[_loc_3];
            if (DefenseInfo.defenseInfo[param1] == null)
            {
                return false;
            }
            var _loc_5:* = DefenseInfo.defenseInfo[param1];
            if (_loc_5 == null)
            {
                return false;
            }
            if (_loc_5.rewards[_loc_4.scoreMin] == 1 || _loc_5.rewards[_loc_4.scoreMin] == 2)
            {
                return true;
            }
            return false;
        }// end function

        public static function getPassTipStr(param1:int) : String
        {
            var _loc_3:Array = null;
            var _loc_4:int = 0;
            var _loc_5:Array = null;
            var _loc_6:int = 0;
            var _loc_7:int = 0;
            var _loc_8:int = 0;
            var _loc_2:* = Language.getArrayByStr(70880);
            if (hasPassCopyById(param1))
            {
                return null;
            }
            _loc_3 = DefenseInfo.DefenseCopyCodeArr;
            _loc_4 = 0;
            while (_loc_4 < _loc_3.length)
            {
                
                _loc_5 = _loc_3[_loc_4];
                _loc_6 = 0;
                while (_loc_6 < _loc_5.length)
                {
                    
                    _loc_7 = _loc_5[_loc_6];
                    if (param1 == _loc_7 && !isLowerDiffPass(_loc_4, _loc_6))
                    {
                        _loc_8 = _loc_6 - 1;
                        if (_loc_8 >= 0)
                        {
                            return _loc_2[_loc_8];
                        }
                    }
                    _loc_6++;
                }
                _loc_4++;
            }
            return null;
        }// end function

        public static function getSmallMapId(param1:int) : int
        {
            var _loc_2:* = DefenseInfo.getLvAndDifByCode(param1);
            if (_loc_2)
            {
                return DefenseInfo.DefenseCopyCodeArr[_loc_2[0]][0];
            }
            return param1;
        }// end function

    }
}
